As the abilities of computers expand into entertainment genres that once required separate electronic components, increased efficiency and user-friendliness is desirable. One solution is Microsoft's® DirectShow®, which provides playback of multimedia streams from local files or Internet servers, capture of multimedia streams from devices, and format conversion of multimedia streams. DirectShow® enables playback of video and audio content of file types such as MPEG, Apple® QuickTime®, Audio-Video Interleaved (AVI), WAV, Windows Media Audio (WMA) and Windows Media Video (WMV).
DirectShow® includes a system of pluggable filter components. Filters are objects that support DirectShow® interfaces and can operate on streams of data by reading, copying, modifying and writing data to a file. The basic types of filters include a source filter, which takes the data from some source, such as a file on disk, a satellite feed, an Internet server, or a VCR, and introduces it into the filter graph. A filter graph is an object which controls the streaming state of a collection of filters. There is also a transform filter, which converts the format of the data, and a rendering filter, which renders the data, for example to a display device or to a file on disk. Any filter which is not a source or sink of data is considered a “transform” filter. Other types of transform filters included in DirectShow® include effect filters, which add effects without changing the data type, and parser filters, which understand the format of the source data and know how to read the correct bytes, create times stamps, and perform seeks.
Each filter contains objects called “pins” that are used to connect to other filters. When filters are connected using the pins, a filter graph is created. Note there is a distinction between a “filter graph” which is the concept of a group of connected filters, and a “Filter Graph” which is the object you create in DirectShow® that controls the group of connected filters, the “filter graph”. The “Filter Graph” is more correctly called a filter graph manager. To control the data flow and connections in a filter graph, DirectShow® includes a filter graph manager. The filter graph manager assists in assuring that filters are connected in the proper order. Filters must be linked appropriately. For example, the filter graph manager must search for a rendering configuration, determine the types of filters available, link the filters appropriate for a given data type and provide an appropriate rendering filter.
Although DirectShow® was an improvement in the field, DirectShow® has limitations. For example, DirectShow® requires the use of pins and has limited configuration flexibility. What is needed is expanded flexibility and modularity of a multimedia system.